﻿using System;
using System.Collections.Generic;
using Wise.TimeWarrior.DTO;
using Wise.TimeWarrior.OSFunctionalitiesProxy;

namespace Wise.TimeWarrior.Interfaces
{
    /// <summary>
    /// Interface describes working day service , needed for retrive working day information
    /// </summary>
    public interface IWorkingDayKeeper
    {
        /// <summary>
        /// <see cref="IDateTimeProvider"/>
        /// </summary>
        IDateTimeProvider DateTimeProvider { set; }
        /// <summary>
        /// <see cref="IDataStore"/>
        /// </summary>
        IDataStore DataStoreService { set; }
        /// <summary>
        /// <see cref="ISystemUsage"/>
        /// </summary>
        ISystemUsage SystemUsageService { set;  }
        /// <summary>
        /// Methods retrives current day information
        /// </summary>
        /// <returns></returns>
        WorkingDayDto GetWorkingDay();
        /// <summary>
        /// Methods retrives working days retrives working days dtos for specific dates
        /// </summary>
        /// <param name="from">datetime</param>
        /// <param name="to">datetime</param>
        /// <returns>workings days</returns>
        List<WorkingDayDto> GetDataInformationForSpecifiedDates(DateTime from, DateTime? to = null);

        void AddImmediate();
    }
}
